package com.example.elasticsearch.service;

import com.example.elasticsearch.domain.EsProduct;
import com.example.elasticsearch.domain.EsProductRelatedInfo;
import org.springframework.data.domain.Page;
import java.util.List;

/**
 * 商品搜索管理Service
 *
 * @author yunda
 * @date 2021/1/25 17:07
 */
public interface EsProductService {

    /**
     * 从数据库中导入所有商品到ES
     */
    int importAll();

    /**
     * 根据id删除商品
     */
    void delete(Long id);

    /**
     * 根据id创建商品
     */
    EsProduct create(Long id);

    /**
     * 批量删除商品
     */

    void delete(List<Long> ids);

    /**
     * 根据关键字搜索名称或者副标题
     */
    Page<EsProduct> search(String keyword, Integer pageNum, Integer pageSize);

    /**
     * 组合搜索，根据输入的关键字搜索商品名称、副标题和关键词，可以按品牌和分类进行筛选
     */
    Page<EsProduct> search(String keyword, Long brandId, Long productCategoryId, Integer pageNum, Integer pageSize, Integer sort);

    /**
     * 商品推荐
     */
    Page<EsProduct> recommend(Long id, Integer pageNum, Integer pageSize);

    /**
     * 聚合搜索
     */
    EsProductRelatedInfo searchRelatedInfo(String keyword);
}
